<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Real-time Java</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Real-time_Java"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Real-time_Java rootpage-Real-time_Java skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Real-time Java</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r1305433154">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style>
<p><b>Real-time Java</b> is a catch-all term for a combination of technologies that enables programmers to write <a href="Computer_program" title="Computer program">programs</a> that meet the demands of <a href="Real-time_computing" title="Real-time computing">real-time</a> <a href="Systems" class="mw-redirect" title="Systems">systems</a> in the <a href="Java_(programming_language)" title="Java (programming language)">Java programming language</a>.
</p><p>Java's sophisticated <a href="Memory_management" title="Memory management">memory management</a>, native support for <a href="Thread_(computing)" title="Thread (computing)">threading</a> and concurrency, <a href="Type_safety" title="Type safety">type safety</a>, and relative simplicity have created a demand for its use in many domains. Its capabilities have been enhanced to support real-time computational needs:
</p>
<ul><li>Real-time Java supports a strict <a href="Preemption_(computing)" title="Preemption (computing)">priority-based</a> <a href="Thread_(computing)" title="Thread (computing)">threading</a> model,</li>
<li>because Java threads support priorities, Java <a href="Lock_(computer_science)" title="Lock (computer science)">locking</a> mechanisms support <a href="Priority_inversion" title="Priority inversion">priority inversion</a> avoidance techniques, such as <a href="Priority_inheritance" title="Priority inheritance">priority inheritance</a> or the <a href="Priority_ceiling_protocol" title="Priority ceiling protocol">priority ceiling protocol</a>, and</li>
<li>event handling.</li></ul>
<p>The initial proposal<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> for an open standard for real-time Java was put forth by Kelvin Nilsen, then serving as a research faculty member at Iowa State University. A follow-on overview paper was published in the <i><a href="Communications_of_the_ACM" title="Communications of the ACM">Communications of the ACM</a></i>.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> The overwhelmingly positive response to these early proposals resulted in a series of meetings hosted by the National Institute of Standards and Technology in an effort to establish an open standard for real-time Java. NIST was ultimately told that they were not the appropriate body to establish standards related to the Java language, as Java was trademarked, and the technologies were owned by Sun Microsystems. Therefore, NIST ended their efforts with publication of consensus requirements.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> that could be considered by future standardization efforts to be hosted by Sun Microsystems.
</p><p>When the <a href="Java_Community_Process" title="Java Community Process">Java Community</a> was formed, the very first effort was the specification for real-time Java, JSR001. A number of implementations of the resulting <i>Real-time specification for Java</i> (<i>RTSJ</i>) have emerged, including a <a href="Reference_implementation_(computing)" class="mw-redirect" title="Reference implementation (computing)">reference implementation</a> from <a href="TimeSys" title="TimeSys">Timesys</a>, <a href="IBM" title="IBM">IBM</a>'s WebSphere Real Time, <a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a>'s Java SE Real-Time Systems,<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> PTC Perc from <a href="PTC%2C_Inc." class="mw-redirect" title="PTC, Inc.">PTC, Inc.</a>,<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> or <a href="JamaicaVM" title="JamaicaVM">JamaicaVM</a> from aicas.
</p><p>The RTSJ addressed the critical issues by mandating a minimum specification for the threading model (and allowing other models to be plugged into the VM) and by providing for areas of <a href="Memory" title="Memory">memory</a> that are not subject to garbage collection, along with threads that are not preemptable by the garbage collector. These areas are instead managed using <a href="Region-based_memory_management" title="Region-based memory management">region-based memory management</a>. The latest specification, 2.0, supports direct device access and deterministic garbage collection as well.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Real-Time_Specification_for_Java">Real-Time Specification for Java</h2></div>
<p>The <i>Real-Time Specification for Java</i> (RTSJ) is a set of <a href="Interface_(computer_science)" class="mw-redirect" title="Interface (computer science)">interfaces</a> and behavioral refinements that enable real-time <a href="Computer_programming" title="Computer programming">computer programming</a> in the <a href="Java_(programming_language)" title="Java (programming language)">Java programming language</a>. RTSJ 1.0 was developed as JSR 1 under the <a href="Java_Community_Process" title="Java Community Process">Java Community Process</a>, which approved the new standard in November, 2001. RTSJ 2.0 is being developed under JSR 282. A draft version is available at a JCP page.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> More information can be found from Aicas.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Javolution" title="Javolution">Javolution</a> – RTSJ Compliant Java Library</li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20170809011950/http://www.cs.cornell.edu/courses/cs614/1999sp/papers/rtji.pdf">"Issues in the Design and Implementation of Real-Time Java"</a> <span class="cs1-format">(PDF)</span>. Archived from <a rel="nofollow" class="external text" href="http://www.cs.cornell.edu/courses/cs614/1999sp/papers/rtji.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 2017-08-09.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite id="CITEREFNilsen1998" class="citation journal cs1">Nilsen, Kelvin (1998). <a rel="nofollow" class="external text" href="https://dl.acm.org/doi/abs/10.1145/276609.276619">"Adding real-time capabilities to Java"</a>. <i>Communications of the ACM</i>. <b>41</b> (6): <span class="nowrap">49–</span>56. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F276609.276619">10.1145/276609.276619</a>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite class="citation journal cs1"><a rel="nofollow" class="external text" href="https://www.itl.nist.gov/div897/ctg/real-time/rtj-final-draft.pdf">"Information Technology Laboratory"</a> <span class="cs1-format">(PDF)</span>. <i>NIST</i>. 28 April 2015.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://java.sun.com/javase/technologies/realtime/index.jsp">"Sun Java Real-Time System"</a>. <i>java.sun.com</i>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.ptc.com/developer-tools/perc">"Real-Time Java with PTC Perc | PTC"</a>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external free" href="https://www.jcp.org/en/jsr/detail?id=282">https://www.jcp.org/en/jsr/detail?id=282</a> JSR 282</span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20150526085240/https://www.aicas.com/cms/rtsj">"Real-Time Specification for Java | aicas.com"</a>. Archived from <a rel="nofollow" class="external text" href="https://www.aicas.com/cms/rtsj">the original</a> on 2015-05-26<span class="reference-accessdate">. Retrieved <span class="nowrap">2025-02-17</span></span>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.cs.cornell.edu/courses/cs614/1999sp/papers/rtji.pdf">Issues in the Design and Implementation of Real-Time Java</a></li>
<li><a rel="nofollow" class="external text" href="https://dl.acm.org/doi/abs/10.1145/276609.276619">Adding Real-Time Capabilities to Java</a></li>
<li><a rel="nofollow" class="external text" href="https://www.itl.nist.gov/div897/ctg/real-time/rtj-final-draft.pdf">Requirements for Real-Time Extensions for the Java Platform</a></li>
<li><a rel="nofollow" class="external text" href="http://aicas.com/cms/en/rtsj">Real-Time Specification for Java 2.0 (RTSJ 2.0)</a></li>
<li><a rel="nofollow" class="external text" href="http://jcp.org/en/jsr/detail?id=282">JSR-282</a></li>
<li><a rel="nofollow" class="external text" href="http://www.rtsj.org/">Real-Time Specification for Java (RTSJ)</a></li>
<li><a rel="nofollow" class="external text" href="http://jcp.org/en/jsr/detail?id=1">JSR-1</a></li>
<li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20090130041631/http://www-03.ibm.com/linux/realtime.html">IBM WebSphere Real Time</a> a fully conformant RTSJ SE VM</li>
<li><a rel="nofollow" class="external text" href="http://www.aicas.com/jamaica.html">JamaicaVM</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20120229051714/http://www.aicas.com/jamaica.html">Archived</a> 2012-02-29 at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a> an RTSJ SE implementation with deterministic garbage collection</li>
<li><a rel="nofollow" class="external text" href="http://www.ptc.com/developer-tools/perc">PTC Perc</a> a real-time VM based on Java Standard Edition but with a patented deterministic garbage collection technology rather than RTSJ</li>
<li><a rel="nofollow" class="external text" href="http://www.oracle.com/technetwork/java/javase/tech/index-jsp-139921.html">Sun Java SE Real-Time System</a></li>
<li><a rel="nofollow" class="external text" href="http://www.apogee.com/">Apogee real-time Java with real-time GC (discontinued)</a></li>
<li><a rel="nofollow" class="external text" href="http://www.timesys.com/java/">Timesys RTSJ implementation and testing toolkit</a></li>
<li><a rel="nofollow" class="external text" href="https://jrate.sourceforge.net/">jRate (Java Real-Time Extension)</a> an open-source extension of the GNU GCJ compiler front-end and runtime system which adds support for most of the features required by the RTSJ.</li>
<li><a rel="nofollow" class="external text" href="http://www.cs.purdue.edu/homes/jv/JTRES05/index.html">International Workshop on Java Technologies for Realtime and Embedded Systems (JTRES 2005)</a> <a rel="nofollow" class="external text" href="http://www-users.cs.york.ac.uk/~andy/JTRES06/">JTRES 2006</a> <a rel="nofollow" class="external text" href="http://www.vmars.tuwien.ac.at/jtres2007/">JTRES 2007</a> <a rel="nofollow" class="external text" href="http://jtres.java.sun.com/2008/">JTRES 2008</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20080628074409/http://jtres.java.sun.com/2008/">Archived</a> 2008-06-28 at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a> <a rel="nofollow" class="external text" href="http://pan.vmars.tuwien.ac.at/jtres2009/">JTRES 2009</a> <a rel="nofollow" class="external text" href="http://d3s.mff.cuni.cz/conferences/jtres2010/">JTRES 2010</a> <a rel="nofollow" class="external text" href="http://www.artist-embedded.org/artist/JTRES-2011.html">JTRES 2011</a> <a rel="nofollow" class="external text" href="http://jtres2013.atego.com/">JTRES 2012</a> <a rel="nofollow" class="external text" href="http://jtres2013.atego.com/">JTRES 2013</a> <a rel="nofollow" class="external text" href="http://jtres2014.compute.dtu.dk/">JTRES 2014</a> <a rel="nofollow" class="external text" href="http://jtres2015.univ-mlv.fr/">JTRES 2015</a></li>
<li><a rel="nofollow" class="external text" href="https://git.cs.lth.se/ljrt/ljrtcompiler">LJRT Lund Java based Real-Time open source</a></li>
<li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20110106194536/http://www.ovmj.net/">Ovm</a></li>
<li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20090714105647/http://www.fiji-systems.com/">Fiji VM real-time Java </a></li>
<li><a rel="nofollow" class="external text" href="http://rtjava.blogspot.com/2009/07/real-time-java-vms.html">Real-time Java VMs </a></li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-07-09" href="https://en.wikipedia.org/wiki/?title=Real-time_Java&oldid=1299686933">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>